package com.lxw.station.chatgpt.qianfan;

import lombok.Data;
import lombok.experimental.Accessors;

import java.util.ArrayList;
import java.util.List;
@Data
@Accessors(chain = true)
public class QianFanParam {
    /**
     * 说明：
     * （1）较高的数值会使输出更加随机，而较低的数值会使其更加集中和确定
     * （2）默认0.8，范围 (0, 1.0]，不能为0
     */
    private double temperature = 0.8;

    /**
     * 指定响应内容的格式，说明：
     * （1）可选值：
     * · json_object：以json格式返回，可能出现不满足效果情况
     * · text：以文本格式返回
     * （2）如果不填写参数response_format值，默认为 text
     */
    private String response_format = "text";
    /**
     * 聊天上下文信息。说明：
     * （1）messages成员不能为空，1个成员表示单轮对话，多个成员表示多轮对话；例如：
     * · 1个成员示例，"messages": [ {"role": "user","content": "你好"}]
     * · 3个成员示例，"messages": [ {"role": "user","content": "你好"},{"role":"assistant","content":"需要什么帮助"},{"role":"user","content":"自我介绍下"}]
     * （2）最后一个message为当前请求的信息，前面的message为历史对话信息
     * （3）成员数目必须为奇数，成员中message的role值说明如下：奇数位message的role值必须为user或function，偶数位message的role值为assistant，第一个message的role不能是function。例如：
     * 示例中message中的role值分别为user、assistant、user、assistant、user；奇数位（红框）message中的role值为user，即第1、3、5个message中的role值为user；偶数位（蓝框）值为assistant，即第2、4个message中的role值为assistant
     */
    private List<Message> messages = new ArrayList<>();

    @Data
    public static class Message {
        private String role;
        private String content;
    }

    public QianFanParam addMessage(Message message){
        messages.add(message);
        return this;
    }
}
